/**
 * 集合的特点
 *    集合通常是由一组: 无序的 不能补充的元素构成
 *    集合是特殊的数组 特殊之处在于里面的元素没有顺序 也不能重读
 *    没有顺序意味着不能 通过下标值进行访问不能重复意味着相同的对象只能只会存在一份
 */
class Set {
  constructor () {
    this.items = {}
  }
  //判断集合集合中是否存在value值 存在返回true 否则返回false
  has (value) {
    return this.items.hasOwnProperty(value)
  }
  // 向集合添加一个新的项
  add (value) {
    if (this.has(value)) return false
    this.items[value] = value
    return true
  }
  // 删除集合指定的value
  remove (value) {
    if (!this.has(value)) return false
    delete this.items[value]
  }
  // 清空集合中的所有的value
  clear () {
    this.items = {}
  }
  // 获取集合中的value个数
  size(){
    return Object.keys(this.items).length
  }
  // 获取集合中所有的value
  values(){
    return Object.keys(this.items)
  }
}
let set = new Set()
console.log(set);
console.log(set.has('a'));
set.add(1)
set.add(2)
set.add(3)
console.log(set);
set.remove(1)
console.log(set);
console.log(set.size());
console.log(set.values);